// pages/confirm-order/confirm-order.js
const db = wx.cloud.database();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    orderInfo: null,
    totalPrice: 0,
    isSubmitting: false // 防止重复提交
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const orderInfo = wx.getStorageSync('orderInfo');
    if (orderInfo) {
      this.setData({
        orderInfo: orderInfo
      });
      this.calculatePrice();
    } else {
      wx.showToast({
        title: '订单信息获取失败',
        icon: 'none',
        duration: 2000,
        complete: () => {
          wx.navigateBack();
        }
      });
    }
  },

  /**
   * 计算价格 (此处为模拟)
   * 真实场景中，价格计算应该由后端或云函数完成，以防篡改
   */
  calculatePrice: function () {
    const options = this.data.orderInfo.printOptions;
    let price = 0;
    // 基础价格
    let basePrice = options.isColor ? 1.0 : 0.5; // 彩色1元，黑白0.5元
    if (options.pageSize === 'A3') {
      basePrice *= 2; // A3纸价格翻倍
    }
    price = basePrice * options.copies;
    // 双面打印优惠（示例：打9折）
    if (options.isDuplex) {
      price *= 0.9;
    }

    this.setData({
      totalPrice: price.toFixed(2) // 保留两位小数
    });
  },

  /**
   * 提交订单
   */
  submitOrder: function () {
    if (this.data.isSubmitting) return;
    this.setData({ isSubmitting: true });

    wx.showLoading({
      title: '正在提交订单...',
    });

    const orderInfo = this.data.orderInfo;
    const filePath = orderInfo.filePath;
    const cloudPath = `print_files/${Date.now()}-${Math.floor(Math.random() * 1000)}${filePath.match(/\.[^.]+?$/)[0]}`;

    // 1. 上传文件到云存储
    wx.cloud.uploadFile({
      cloudPath: cloudPath,
      filePath: filePath,
    }).then(uploadRes => {
      // 2. 调用云函数创建订单，将文件ID等信息写入数据库
      wx.cloud.callFunction({
        name: 'createOrder', // <--- ***已修正***
        data: {
          printerId: orderInfo.printerId,
          fileUrl: uploadRes.fileID,
          fileName: orderInfo.fileName,
          printOptions: orderInfo.printOptions,
          totalPrice: parseFloat(this.data.totalPrice)
        }
      }).then(orderRes => {
        wx.hideLoading();
        if (orderRes.result && orderRes.result.success) {
          // 3. （模拟）支付流程
          wx.showToast({
            title: '下单成功,即将模拟支付',
            icon: 'none',
            duration: 2000
          });
          // 模拟支付成功后跳转
          setTimeout(() => {
            wx.redirectTo({
              url: `/pages/order-status/order-status?orderId=${orderRes.result.orderId}`,
            });
          }, 2000);

        } else {
          throw new Error('创建订单失败');
        }
      });
    }).catch(err => {
      wx.hideLoading();
      this.setData({ isSubmitting: false });
      wx.showToast({
        title: '提交失败，请重试',
        icon: 'none'
      });
      console.error('订单提交失败', err);
    });
  }
});